$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

1. Увод у Џупитер (Jupyter)

У овој лекцији ћеш научити:

  1. шта је Џупитер (Jupyter), како се крећеш кроз Џупитер радну свеску (Jupyter Notebook) и како се Џупитер радна свеска користи за рачунање израза;
  2. како се у Џупитеру користе променљиве и како се радна свеска користи покретање мањих Пајтон (Python) програма; и
  3. шта су библиотеке функција и како се позивају функције из стандардних библиотека.

1.1. Џупитер (Jupyter) уме да рачуна

Џупитер (Jupyter) је интерактивна радна свеска у коју можеш да уносиш текст (као текст ког управо читаш), да рачунаш, да покрећеш једноставније Пајтон програме, да обрађујеш податке, да приказујеш податке у виду табеле и дијаграма, и још много тога.

Свака Џупитер радна свеска се састоји из низа ћелија, а свака ћелија може да садржи текст, математички израз или низ Пајтон наредби. За сада нећемо објашњавати како се у Џупитер ћелију уноси текст, већ ћемо пажњу усмерити на рачунање израза и извршавање Пајтон наредби.

Када се у Џупитер ћелију унесе неки израз или Пајтон наредба садржај ћелије се може израчунати тако што се кликне на дугме Run при врху стране:

Dugme za izvršavanje ćelije

или се на тастатури притисне [CTRL]+[ENTER]

Ево примера:

In [1]:
3 * 19
Out[1]:
57
In [2]:
(12 + 51) * 14
Out[2]:
882
In [3]:
2**(5**3)
Out[3]:
42535295865117307932921825928971026432

Да се подсетимо, две звездице у Пајтону означавају степеновање.

1.2. Џупитер уме да користи променљиве и да извршава Пајтон команде

Понекад је згодно именовати вредности, поготово ако се ради о компликованим бројевима као што је то $\pi$ или када се ради о компликованим изразима. Те вредности касније можемо да користимо тако што наведемо име које смо им дали. На пример, процењује се да је на дан 1.7.2019. на свету било 7.714.576.923 људи. Наредба

BrLjudiNaSvetu_2019 = 7714576923

ће у систем увести нову променљиву BrLjudiNaSvetu_2019 којој ће бити додељена вредност 7714576923. Да се подсетимо: имена променљивих у Пајтону морају да почну словом и могу да садрже слова, цифре и специјални знак _ (доња црта).

In [4]:
BrLjudiNaSvetu_2019 = 7714576923

Након извршавања ове ћелије систем неће вратити никакав одговор. Просто је запамтио да променљива BrLjudiNaSvetu_2019 има вредност 7.714.576.923. Процењује се да 27,8% становништва света живи у градовима. То значи да у градовима живи оволико људи:

In [5]:
BrLjudiNaSvetu_2019 * 27.8 / 100
Out[5]:
2144652384.5939999

Приметимо да се приликом записивања децималних бројева у Пајтону користи децимална тачка, а не децимални зарез, како је то прописано нашим правописом!

Хајде сада да решимо још један задатак.

Задатак. Милица је желела да купи панталоне које су коштале 6.799,99 динара, али јој је мама рекла да су прескупе. Зато је Милица сачекала сезону снижења и када је следећи пут обишла продавницу видела је да је цена панталона снижена за 25%. Мама је пристала да јој купи панталоне по сниженој цени. Када су дошле до касе пријатно су биле изненађене чињеницом да су добиле попуст од 3% на већ снижену цену зато што је њена мама панталоне платила готовином. Колико су на крају коштале панталоне?

In [6]:
cena = 6799.99
popust1 = cena * 25 / 100
niza_cena = cena - popust1
popust2 = niza_cena * 3 / 100
niza_cena - popust2
Out[6]:
4946.992725

Прве четири наредбе су наредбе доделе: неким променљивим додељујемо неке вредности. Последња наредба садржи само математички израз. Пошто радимо у интерактивном окружењу (што значи да Џупитер одмах даје одговоре на питања која му поставимо), ако је последња наредба у ћелији само израз систем ће вратити вредност тог израза као резултат извршавања ћелије.

Претходни програм смо могли да напишемо и овако:

In [7]:
cena = 6799.99
popust1 = cena * 25 / 100
niza_cena = cena - popust1
popust2 = niza_cena * 3 / 100
print("Pantalone su na kraju kostale", niza_cena - popust2, "din")
Pantalone su na kraju kostale 4946.992725 din

Овај пут наредба print исписује вредност израза, а систем ништа не враћа као резултат извршавања ћелије (примети да након извршавања ћелије систем није вратио одговор у облику Out[ ]:).

При раду са интерактивним окружењима згодно је усвојити следећи манир: наредбу print користимо само у ситуацијама у којима треба да прикажемо вредности неколико израза, или ако желимо да испис мало улепшамо, као у претходном примеру.

1.3. Библиотеке функција

У модерним програмским језицима, а Пајтон је један од њих, могу да се ураде невероватне ствари зато што долазе са обиљем функција које су већ испрограмиране. Тако се кориснику система (или програмеру) умногоме олакшава живот: већина ствари које просечном кориснику требају су већ испрограмиране, само треба наћи одговарајућу функцију!

Да би се корисници лакше снашли у овом обиљу, све функције које долазе уз програмски језик (односно, одговарајуће окружење) су груписане у библиотеке функција.

Рецимо, библиотека математичких функција се зове math. Она садржи функције као што су sqrt (која рачуна квадратни корен), sin (која рачуна синус угла) и cos (која рачуна косинус угла), али и математичке константе као што је pi (која представља добру апроксимацију броја $\pi$).

На пример, програм који рачуна обим круга датог полупречника изгледа овако:

In [8]:
from math import pi
r = float(input("Unesi poluprecnik kruga: "))
obim = 2 * r * pi
print("Obim kruga je:", obim)
Unesi poluprecnik kruga: 10
Obim kruga je: 62.83185307179586

Први ред у овом програму показује како се из неке библиотеке може увести функција или константа која нам је потребна. Наредба

from math import pi

дословно значи: из библиотеке math увези појам pi. Тиме смо у програм увели име pi и слободно можемо да га користимо.

Ево још једног примера. Написаћемо Пајтон програм који одређује хипотенузу $c$ правоуглог троугла ако знамо његове катете $a$ и $b$. (Да се подсетимо, према Питагориној теореми је $c = \sqrt{a^2 + b^2}$.)

За овај програм ће нам требати функција sqrt која рачуна корен неког броја и која се такође налази у библиотеци math.

In [10]:
from math import sqrt
a = float(input("Unesi katetu a: "))
b = float(input("Unesi katetu b: "))
c = sqrt(a**2 + b**2)
print("Hipotenuza c je:", c)
Unesi katetu a: 6
Unesi katetu b: 8
Hipotenuza c je: 10.0

Претходна два примера представљају комплетне мале програме: податке смо учитали наредбом input, обрадили смо их на одговарајући начин, и резултате смо исписали наредбом print.

Рад са интерактивним окружењима нам омогућује да уместо целих програма пишемо "парчиће кода" које можемо да мењамо како нам одговара и да их извршавамо колико год пута желимо. Тако се лакше експериментише са подацима (што је важан део модерног разумевања обраде података и о томе ћемо причати касније), и штеди време. Тада углавном не користимо наредбу input већ директно у код унесемо вредности које нас интересују.

На пример, претходни проблем (рачунање хипотенузе правоуглог троугла) можемо у интерактивном окружењу да решимо и овако:

In [11]:
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)
Out[11]:
5.0

Наредба a, b = 3, 4 значи да ће а добити вредност 3, а b вредност 4. Резултат извршавања ћелије је вредност израза sqrt(a**2 + b**2).

1.4. Задаци

Задатке који следе реши у Џупитеру.

Задатак 1.

(а) Једна књига је коштала 2460 динара, а онда је књижара снизила њену цену за 20%. Колико сада кошта књига?

(б) Друга књига у истој књижари након снижења од 20% кошта 1480 динара. Колико је коштала пре снижења?

Задатак 2. Процењује се да је Кина на дан 1.7.2019. имала 1.420.062.022 становника. Број становника у Кини се сваке године повећа за 0,35%. Под претпоставком да се годишњи раст броја становника у Кини неће мењати, колико становника ће Кина имати 2020. године?

In [ ]:
 

Задатак 3*. Процењује се да је Кина на дан 1.7.2019. имала 1.420.062.022 становника, а Индија 1.368.737.513. Број становника у Кини се сваке године повећа за 0,35%, а у Индији за 1,08%. Након колико година ће Индија престићи Кину по броју становника, под претпоставком да се годишњи раст броја становника ни у једној од ове две државе неће мењати?

In [ ]:
 

Задатак 4. Напиши Пајтон програм који учитава полупречник круга, а онда рачуна и штампа његову површину. (Помоћ: pi се налази у библиотеци math.)

In [ ]:
 

Задатак 5. Растојање две тачке дате у равни својим координатама $A(x_1, y_1)$ и $B(x_2, y_2)$ може се израчунати помоћу формуле

$$d(A, B) = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$$

Напиши Пајтон програм који учитава координате две тачке у равни и потом рачуна и штампа њихово растојање. (Помоћ: sqrt се налази у библиотеци math; ако ти ова формула делује застрашујуће не брини: то само прерушена Питагорина теорема!)

In [ ]:
 

Задатак 6. Факторијел броја $n$ је производ свих бројева од 1 до $n$ и означава се овако:

$$n! = 1 \cdot 2 \cdot 3 \cdot \dots \cdot n.$$

Израчунај број 200! и утврди са колико нула се завршава. (Помоћ: библиотека math има функцију factorial.)

In [ ]:
 

Задатак 7*. Користећи парче кода наведено у ћелији испод нађи још један пар целих бројева $a$ и $b$ такав да је хипотенуза правоуглог троугла са катетама $a$ и $b$ целобројна. Уместо 3, 4 унеси неки други пар целих бројева, изврши ћелију и експериментиши! (Такве тројке целих бројева се зову Питагорине тројке.)

In [ ]:
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)